package inutan.gateway.scheduled;


import inutan.common.utils.HttpUtils;
import org.ricks.common.event.Event;
import org.ricks.common.event.Scheduled;
import org.ricks.common.json.JSONObject;
import org.ricks.ioc.anno.Bean;

/**
 *     每隔5秒执行一次：*\/5 * * * * ?
 *
 *     每隔1分钟执行一次：0 *\/1 * * * ?
 *
 *     每天23点执行一次：0 0 23 * * ?
 *
 *     每天凌晨1点执行一次：0 0 1 * * ?
 *
 *     每月1号凌晨1点执行一次：0 0 1 1 * ?
 *
 *     每月最后一天23点执行一次：0 0 23 L * ?
 *
 *     每周星期天凌晨1点实行一次：0 0 1 ? * L
 *
 *     在26分、29分、33分执行一次：0 26,29,33 * * * ?
 *
 *     每天的0点、13点、18点、21点都执行一次：0 0 0,13,18,21 * * ?
 */
@Event
public class ScheduledService {

    /**
     * 5秒一次 发送存活状态
     * 1.gateway连接redis ,依赖redis key过期机制探测。5s设置一次重置过期时间
     * 2.post http login 由登陆服 进行redis set。登录服 玩家登陆分配gateway节点 无可避免需要从redis load
     *
     *  gateway单独进程模式，不依赖于redis MySQL mq  zk  任何第三方插件
     */
    @Scheduled(cron = "*/5 * * * * ?")
    public void scheduled5s() {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("remoteAddress", "127.0.0.1:55555");
        jsonObject.put("localAddress", "127.0.0.1:25152");
        jsonObject.put("gatewayId", 1);

        JSONObject gatewayJson = new JSONObject();
        gatewayJson.put("gatewayInfo", jsonObject);

        HttpUtils.doAsyncPost("http://127.0.0.1:8080/gatewayHeartbeat", gatewayJson.toString());
    }


}
